<?php
/**
 * Created by IntelliJ IDEA.
 * User: fanxu(746439274@qq.com)
 * Date: 15/7/9
 * Time: 上午11:27
 */

/**
 * 建立树形结构
 * @param $list
 * @param string $idKey
 * @param string $pidKey
 * @param string $subKey
 * @return mixed
 */
function build_tree( $list, $idKey='id', $pidKey='pid' , $subKey = 'sub' ){
    $tree = array();
    foreach($list as $item){
        if(isset($list[$item[$pidKey]])){
            $list[$item[$pidKey]][$subKey][$item[$idKey]]
                =
            &$list[$item[$idKey]];
            $tree[$item[$idKey]] = &$list[$item[$pidKey]][$subKey][$item[$idKey]];
        }else{
            $tree[$item[$idKey]] = &$list[$item[$idKey]];
        }
    }
    return $tree;
}

/**
 * @param $arr
 * @param int $pid
 * @param string $idKey
 * @param string $pidKey
 * @param string $nameKey
 * @param string $valueKey
 * @param string $selected
 * @param int $index
 */
function html_tree($arr,$pid=0,$idKey='id',$pidKey='pid',$nameKey='name', $valueKey ='id',$selected , &$index=0){
    echo '<ul style="list-style-type: none;" id="tree">';
    foreach ($arr as $id =>$v){
        if($v[$pidKey]==$pid){
            $select = '';
            if(in_array( $v[$valueKey] , $selected ) ){
                $select = 'checked="checked"';
            }
            echo '<li><input '.$select.' type="checkbox" name="keys[',$index++,']" value="',$v[$valueKey],'" />',$v[$nameKey];
            html_tree($arr,$v[$idKey],$idKey,$pidKey,$nameKey,$valueKey,$selected,$index);
            echo '</li>';
        }
    }
    echo '</ul>';
}
